BASIC 04. 텍스트 출력

  • 기본 파일 간의 연간관계
파일역할
strings.xml *리소스 관리

\-화면에 출력할 텍스트 리소스를 정의한다
main.xml *UI 설계

\-strings.xml에서 정의된 텍스트 리소스를 이용하며 화면레이아웃을 설계한다.
activity.java로직/사용자 상호작용

\-액티비티를 생성하고, main.xml 출력한다.
\-어플리케이션 시작시 실행한다.
AndroidManifest.xml어플리케이션 기본 정보(아이콘, 라벨, 액티비티등) 구성

\-액티비티클래스, 어플리케이션 라벨, 액티비티라벨을 지정한다.
[ 안드로이드 자바 클래스 계층도 ]

  • 안드로이드의 주요 클래스

-뷰(View) 클래스 : UI 컴포넌트들을 위한 기본적인 구현 영역 기술
-위젯(Widget) : 뷰(View) 클래스 기반의 버튼, 텍스트 필드등 사용자와 상호작용하는 UI컴포넌트
-뷰 그룹(ViewGroup) : 레이아웃 특성 정의, 눈에는 보이지 않는 컨테이너인 레이아웃의 기반
-텍스트 뷰(TextView) : 사용자에게 텍스트를 출력
서브클래스와 수퍼클래스와의 관계는 안드로이드 개발자센터에서 파악할수 있다.(http://developer.android.com/develop/index.html)


[ 클래스의 XML속성 ]
클래스속성설명
viewandroid:id생성된 뷰의 식별을 위한 이름. 즉, 식별자를 의미함.
viewGroupandroid:layout_width뷰의 너비를 의미한다.

\-fill_parent-부모의 영역을 가득채움.

\-wrap_content-뷰의 컨텐츠 크기만큼 나타남.

\-정수-지정한 정수값 만큼 나타남. 단위:px, dp, sp, in, mm
LinearLayoutandroid:layout_height뷰의 높이를 의미한다.

\-속성값은 android:layout_width와 동일
TextViewandroid:orientation화면 레이아웃의 방향을 의미한다.

\-행에 대해서는 vertical(수직), 열에 대해서는 horizontal(수평)을 지정함.
TextViewandroid:texttextview가 출력하는 문자를 의미한다.

\-속성값은 문자열을 하드코딩하거나, string 리소스를 정의하여 사용할 수 있음.


[ 대표적인 레이아웃 ]
  • 레이아웃의 종류에는 여러가지가 있지만, LinearLayout, RelativeLayout, TableLayout 이 세가지가 일반적으로 가장 많이 쓰이게 된다.
레이아웃명상속 계층도특징
LinearLayoutjava.lang.Object

└ android.view.View

└ android.view.ViewGroup

└ android.widget.LinearLayout
\-기본값은 수평정렬이다.

\-LinearLayout에 붙이는 순서대로 배치된다.

\-별도의 지정이 없는 한 뷰 사이의 공백이 없다.
RelativeLayoutjava.lang.Object

└ android.view.View

└ android.view.ViewGroup

└ android.widget.RelativeLayout
\-자식뷰의 위치를 상대적으로 배치한다.

\-중첩된 형태의 뷰구성이 가능하다.

\-형제뷰, 부모뷰를 기준으로 정렬한다.
TableLayoutjava.lang.Object

└ android.view.View

└ android.view.ViewGroup

└ android.widget.LinearLayout

└ android.widget.TableLayout
\-바둑판 모양의 표 형태로 뷰를 배치한다.

\-줄(행)과 칸(열) 이라는 개념을 가진다.

참고사이트 : http://developer.android.com/reference/android/widget/LinearLayout.html


[ (사용자정의) Activity 클래스의 실행원리 ]
  • 프로젝트의 메인 클래스인 (사용자정의)Activity 클래스 실행하면, onCreate()메소드가 자동으로 호출된다.
    onCreate() 메소드에는 액티비티가 수행될 절차를 기술한다.
    1. 수퍼 클래스인 Activity 클래스의 onCreate()메소드를 이용하여 (super.onCreate()) 액티비티를 생성함.
    2. Activity클래스 로부터 상속받은 serContentView()메소드를 이용하여 레이아웃을 출력함.
    <p153 그림참조>


<LinearLayout을 이용한 실습화면>

<RelativeLayout을 이용한 실습화면>



LAB 04. 텍스트의 폰트 변화

  • 클래스의 XML속성
클래스속성설명
viewandroid:background뷰의 배경색을 의미함.

\-'#rgb', '#argb', #rrggbb', '#aarrggbb'등 다양한 형태로 지정할 수 있다.
TextViewandroid:textSize화면에 출력될 텍스트의 크리를 의미함.

\-사용가능 단위는 px, dp, sp, in, mm등 있고, 텍스트의 경우 sp단위의 사용이 추천된다.
android:textColor화면에 출력될 텍스트의 색을 의미함.
android:gravity화면에 출력될 텍스트의 위치를 의미함.

\-top : 컨테이터의 위쪽에 배치

\-bottom : 컨테이너의 아래쪽에 배치

\-left : 컨테이너의 왼쪽에 배치

\-right : 컨테이너의 오른쪽에 배치

\-center_vertical : 컨테이너의 수직 중앙에 배치

\-center_horizontal : 컨테이너의 수평 중앙에 배치

\-center : 컨테이너의 수평과 수직의 중앙에 배치

<폰트변화 적용 실행화면 캡쳐>

Advanced LAB 04. 고객정보의 동적 출력

  • 액티비티 클래스에서 문자열의 동적인 제어를 할 수있다.
    (DB로 부터 데이터 추출하여 출력하는 경우도 같은 방법을 이용한다. 14장 참조)

activity java class에서 setTitle("액티비티 라벨") 을 사용하여, activity label과 application label을 다르게 설정할 수 있다.

TextAdvLabActivity.java


//====================================
// 액티비티 라벨 출력
//------------------------------------
setTitle("ClientInfo");
//====================================


//====================================
// main.xml에 정의된 LinerLayout 인식(ID: Customers)
//------------------------------------
LinearLayout layout = (LinearLayout)findViewById(R.id.customers);
//====================================


//====================================
// LinearLayout의 배경색(흰색)
//------------------------------------
layout.setBackgroundColor(Color.argb(255,255,255,255));
//====================================


//====================================
// 성명과 기타정보를 출력할 TextView 객체 선언
//------------------------------------
TextView tv_name;
TextView tv_etc;
//====================================


//====================================
// 고객 1의 정보: 시작
//------------------------------------
tv_name = new TextView(this);  // TextView객체 생성

tv_name.append("Yuna-Kim");    // 문자출력
tv_name.setTextSize(20);       // 문자크기
tv_name.setTextColor(Color.argb(255,255,255,0));     // 문자 색
tv_name.setBackgroundColor(Color.argb(100,0,0,255)); // 문자 배경색

layout.addView(tv_name);    // TextView객체를 LinearLayout 객체에 추가
//====================================

<실행화면 캡쳐>